#include <stdio.h>

int conjunto[4] = {1,2,3,4};

void verifica_solucao () {
  int i;
  int ja_imprimiu = 0;
  printf ("{");
  for (i = 0; i < 4; i++) 
    if (ja_imprimiu) {
      printf (", %d", conjunto[i]);
    } else {
      printf ("%d", conjunto[i]);
      ja_imprimiu = 1;
    }
  printf ("}\n");
}

void gera_solucao(int n) {
  int tmp, i;
  if (n == 4) 
    verifica_solucao();
  else {
    for (i = n; i < 4; i++) {
      tmp = conjunto[i];
      conjunto [i] = conjunto[n];
      conjunto[n] = tmp;
      gera_solucao(n + 1);
      tmp = conjunto[i];
      conjunto [i] = conjunto[n];
      conjunto[n] = tmp;      
    }
  }
}

int main () {
  gera_solucao (0);
  return (0);
}
